package main.动态规划;

import java.util.Arrays;

/**
 * @author tmh
 * @date 2024/8/6 18:46
 * @description
 */
public class T300最长递增子序列 {
    public int lengthOfLIS(int[] nums) {
        if (nums.length == 0) {
            return 0;
        }
        int[] dp = new int[nums.length];
        //初始化dp数组的值都为1
        Arrays.fill(dp, 1);
        int result = 0;
        //如果nums[i]>nums[j],那么这个情况下最长上升子序列的长度为dp[j]+1，可以带个数值上去模拟下.
        //如果不是这个情况的下，那么以当前字符串结尾的最长子序列的长度就是dp[i]
        for (int i = 0; i < nums.length; i++) {
            for (int j = 0; j < i; j++) {
                if (nums[i] > nums[j]) {
                    dp[i]=Math.max(dp[i],dp[j]+1);
                }
            }
            //更新result的值
            result=Math.max(result,dp[i]);
        }
        return result;
    }
}
